package com.zbkj.service.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.zbkj.common.model.card.StoreGift;
import com.zbkj.common.request.PageParamRequest;
import com.zbkj.common.request.StoreGiftRequest;
import com.zbkj.common.request.StoreGiftSearchRequest;
import com.zbkj.common.response.*;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 礼品配置服务类
 *
 * @author Swallows
 * @date 2022-10-06 10:07
 */
@Service
public interface StoreGiftService extends IService<StoreGift> {

    /**
     * 分页查询礼品信息
     *
     * @param request 礼品查询条件
     * @param pageParamRequest 分页查询参数
     */
    PageInfo<StoreGiftResponse> getList(StoreGiftSearchRequest request, PageParamRequest pageParamRequest);

    /**
     * 新增礼品
     */
    Boolean addGift(StoreGiftRequest request);

    StoreGift getByIdException(Integer id);

    /**
     * 删除礼品配置
     *
     * @param id 礼品id
     */
    Boolean deleteById(Integer id);

    /**
     * 更新礼品信息
     */
    Boolean updateGift(StoreGiftRequest request);

    /**
     * 查询礼品卡可兑换商品详情
     * @return StoreProductInfoResponse
     */
    StoreProductInfoResponse getAdminDetail(Integer id);

    /**
     * 修改礼品卡可兑换商品状态
     */
    Boolean updateGiftShow(Integer id, Boolean isShow);

    /**
     * 根据礼品卡id获取可兑换商品列表
     */
    List<StoreGiftH5Response> getEnableListByCardId(Integer cardId, PageParamRequest pageParamRequest);

    /**
     * 根据礼品id获取详情
     */
    StoreGiftDetailResponse getDetailH5(Integer giftId);

    /**
     * 扣减库存
     *
     * @param id 礼品id
     * @param num 数量
     * @param type 类型：add—添加，sub—扣减
     */
    Boolean operationStock(Integer id, Integer num, String type);
}
